using Microsoft.AspNetCore.Http;

namespace JGSY.CMS.LowCode.Platform.Infrastructure.Upload
{
    /// <summary>
    /// 文件上传请求
    /// 封装文件上传操作的请求参数
    /// </summary>
    /// <remarks>
    /// 该类用于定义文件上传的请求参数，包括：
    /// - 上传的文件数据
    /// - 存储路径配置
    /// - 处理选项（如是否生成缩略图）
    /// - 分类和用户信息
    /// </remarks>
    public class UploadRequest
    {
        /// <summary>
        /// 要上传的文件
        /// </summary>
        /// <remarks>
        /// 通过HTTP表单上传的文件对象，包含文件数据和基本信息
        /// </remarks>
        public IFormFile File { get; set; } = default!;

        /// <summary>
        /// 存储文件夹路径
        /// </summary>
        /// <remarks>
        /// 指定文件存储的子目录，如 "images"、"documents" 等。
        /// 如果为null，将使用默认存储路径
        /// </remarks>
        public string? Folder { get; set; }

        /// <summary>
        /// 是否生成缩略图
        /// </summary>
        /// <remarks>
        /// 仅对图片文件有效。设为true时，系统会自动生成缩略图
        /// </remarks>
        public bool GenerateThumbnail { get; set; }

        /// <summary>
        /// 文件分类
        /// </summary>
        /// <remarks>
        /// 用于文件分类管理的标签，如 "avatar"、"article_image"、"document" 等
        /// </remarks>
        public string? Category { get; set; }

        /// <summary>
        /// 上传用户ID
        /// </summary>
        /// <remarks>
        /// 执行上传操作的用户标识符，用于权限控制和审计追踪
        /// </remarks>
        public int UserId { get; set; }
    }
}